package com.shopoo.oauth.domain.repository;

import java.util.List;

import com.shopoo.oauth.domain.entity.Menu;

/**
 * @Description 菜单数据仓库
 * @Date 2020/10/29 4:49 下午
 * @Author <a href="mailto:android_li@sina.cn">Joe</a>
 **/
public interface MenuRepository {

    /**
     * 保存菜单
     * @param menu
     * @Return void
     * @Date: 2022/3/16 7:24 PM
     * @Author: <a href="mailto:android_li@sina.cn">MaoYuan.Li</a>
     */ 
    void save(Menu menu);
    
    /**
     * 删除菜单
     * @param menuId
     * @Return void
     * @Date: 2022/3/16 5:35 PM
     * @Author: <a href="mailto:android_li@sina.cn">MaoYuan.Li</a>
     */ 
    void deleteByMenuId(Long menuId);

    /**
     * 根据角色删除权限数据
     * @param roleId
     * @Return void
     * @Date: 2022/3/15 11:33 PM
     * @Author: <a href="mailto:android_li@sina.cn">MaoYuan.Li</a>
     */
    void deleteByRoleId(Long roleId);

    /**
     * 根据用户ID获取菜单信息
     * @param userId
     * @Return java.util.List<com.shopoo.oauth.domain.menu.Menu>
     * @Date: 2022/3/15 11:28 PM
     * @Author: <a href="mailto:android_li@sina.cn">MaoYuan.Li</a>
     */ 
    List<Menu> findMenuByUserId(String userId);

    /**
     * 查找所有有效的菜单
     * @param roleId
     * @Return java.util.List<com.shopoo.oauth.domain.entity.Menu>
     * @Date: 2022/3/17 3:58 AM
     * @Author: <a href="mailto:android_li@sina.cn">MaoYuan.Li</a>
     */ 
    List<Menu> findAllValidMenu(Long roleId);

    /**
     * 根据角色查找角色ID的菜单信息
     * @param roleId
     * @Return java.util.List<com.shopoo.oauth.domain.menu.Menu>
     * @Date: 2022/3/15 11:28 PM
     * @Author: <a href="mailto:android_li@sina.cn">MaoYuan.Li</a>
     */ 
    List<Menu> findByRoleId(Long roleId);

    /**
     * 查找所有的菜单信息
     * @param roleId
     * @Return java.util.List<com.shopoo.oauth.domain.menu.Menu>
     * @Date: 2022/3/15 11:28 PM
     * @Author: <a href="mailto:android_li@sina.cn">MaoYuan.Li</a>
     */ 
    List<Menu> findAllMenu(Long roleId);

    Menu findById(Long menuId);

    /**
     * 查询所有角色的菜单权限
     * @param 
     * @Return java.util.List<com.shopoo.oauth.domain.entity.Menu>
     * @Date: 2022/3/17 2:35 AM
     * @Author: <a href="mailto:android_li@sina.cn">MaoYuan.Li</a>
     */ 
    List<Menu> findAllRoleMenus();

    /**
     * 根据条件查询菜单信息
     * @param menu
     * @Return java.util.List<com.shopoo.oauth.domain.menu.Menu>
     * @Date: 2022/3/15 11:27 PM
     * @Author: <a href="mailto:android_li@sina.cn">MaoYuan.Li</a>
     */ 
    List<Menu> findByConditions(Menu menu);

    /**
     * 查询所有角色的菜单权限
     * @param 
     * @Return java.util.List<com.shopoo.oauth.domain.menu.Menu>
     * @Date: 2022/3/15 11:45 PM
     * @Author: <a href="mailto:android_li@sina.cn">MaoYuan.Li</a>
     */ 
    List<Menu> findRoleMenus();

    /**
     * 更新菜单
     * @param menu
     * @Return void
     * @Date: 2022/3/17 1:25 AM
     * @Author: <a href="mailto:android_li@sina.cn">MaoYuan.Li</a>
     */ 
    void updateById(Menu menu);
}
